package com.microservice.microservicemovie.client.feign;


import com.microservice.microservicemovie.entity.User;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.*;

/**
 *  Feign 调用 User 微服务客户端
 *
 *  注解:
 *      @FeignClient value 需要调用的 服务名，application.name
 *
 *  注意事项
 *      1：Feign client 进行调用的时候，@PathVariable 注解必须表明 value 值，不然报错 PathVariable annotation was empty on param 0
 *      2： Read timed out 当调用的 REST 接口响应速度过慢的话，会出现这个问题
 *      3：Method Not Allowed 当 Feign client 在进行 REST 接口调用的时候，只要参数有对象的话，那么默认的方式都会是使用 POST 方式调用
 *      4: 别忘了 POST 方式访问的时候，接受参数的时候使用 @RequestBody 注解
 * Created by bf on 2017/11/14.
 */
@FeignClient("microservice-user")
public interface UserClient {

    /**
     * 新版本可以使用 GetMapping 注解了，老版本只能使用 Mapping 添加 method 参数的形式进行调用
     * @param id
     * @return
     */
    @GetMapping("/getuser/{id}")
    User getUser(@PathVariable("id") Long id);

    @PostMapping("/postuser")
    User postUser(@RequestBody User user);

    @PostMapping("/get-user")
    User getTest(User user);

}
